home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 1 / Gekikoh Dennoh Club Vol. 1 (Japan).7z / Gekikoh Dennoh Club Vol. 1 (Japan) (Track 1).bin / kowin / archive / sys / kowin14b.lzh / doc / hfont.doc < prev    next >
Text File  |  1994-09-09  |  16KB  |  416 lines

  1.  
  2.               X680x0 High-Speed Font Driver
  3.               hfont.r Version 1.22
  4.                             1994 6/28 小笠原博之
  5.  
  6.   従来 h12fon.r という名前で公開していた高速 FONT ドライバの新版です。文字表
  7. 示の源である IOCS FNTADR,FNTGET を高速化&拡張します。
  8.  
  9. (1) 高速なアドレス計算ルーチンによる IOCS FNTADR,FNTGET 全体の高速化
  10. (2) 12/16/24dot(全角,半角,1/4角)に及ぶすべての ROM FONT 切り替えが可能
  11. (3) 12dot FONT を外部から組み込むことによって読みやすい 12dot 全角表示が可能
  12. (4) (3)を組み込まなくても独自の FONT 生成ルーチンで見やすい 12dot 漢字表示
  13. (5) 新たに IOCS レベルで 10dot FONT の利用が可能になる (漢字表示可能)
  14. (6) 外部操作用コマンドhfc付属(あとからfont切替,状態表示,カタひら変換他可能)
  15. (7) 開発用C言語LIB付属
  16.  
  17.   Ko-Window 使用時には、10dot FONT 対応と高速化のため、必ずこの hfont.r を組
  18. み込んでおくようにして下さい。
  19.  
  20.  v1.20 -> 1.22 の変更点: 12dotフォント時1/4角文字が潰れるバグ修正, 10dot全角
  21.     の外部組み込み対応, hfontlib.a hfc.x の同梱, hfont6x6.fon 付属
  22.  
  23. ●付属ファイルについて
  24.  
  25.     hfont.r        ドライバ本体
  26.     hfont.doc    このドキュメント
  27.     hfc.x        hfontドライバコントロールコマンド
  28.     hfc.doc        hfc.x のマニュアル
  29.  
  30.     hfont10.fon    10x5 dot半角ASCIIフォント
  31.     hfont6x6.fon     6x6 dot全角ASCIIフォント(12dot 1/4角フォント)
  32.  
  33.     hfontlib.h    開発用ライブラリヘッダ
  34.     hfontlib.a    開発用ライブラリ
  35.     hfontlib.man    ライブラリマニュアル
  36.     allfont.c    速度測定サンプル
  37.  
  38.  
  39. 注: Ko-Window 基本セットには hfont.r hfont10.fon hfont.doc のみ同梱しています
  40.     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  41.  
  42.  
  43. ●使い方
  44.  
  45.     hfont [スイッチ] [フォントファイル..]
  46.  
  47.   そのまま実行すると常駐します。この時組み込むフォントファイルを与えることが
  48. 可能です。ファイルは複数指定できます。フォントファイルの拡張子は見ていません
  49. ので、必ず拡張子まで書いて下さい。
  50.  
  51.   -r スイッチをつけて実行すると常駐解除になります。
  52.  
  53.   10dot フォントの利用を可能にするには、付属の hfont10.fon の組み込みが必要
  54. です。
  55.  
  56.   <例>
  57.     hfont maru.fon Hart.f12        2つのFONT FILEを組み込んで常駐
  58.     hfont hfont10.fon        付属の10dot半角FONT を組み込んで常駐
  59.     hfont -r            常駐解除
  60.  
  61.  
  62.   CONFIG.SYS で組み込む場合は、PROGRAM 行に記述して下さい。
  63.  
  64.   <例>
  65. PROGRAM = a:\sys\hfont.r a:\sys\hfont10.fon
  66.  
  67.  
  68. 注意: フォントファイル組み込みに失敗するようでしたら、大きなファイルから順に
  69.       与えてみて下さい。
  70.  
  71.  
  72. ●スイッチ
  73.  
  74.     -u    外字領域は組み込みフォントではなくSYSTEM外字を優先にします
  75.  
  76.     -r    常駐を解除します
  77.  
  78.  
  79.  
  80. ●フォント組み込み
  81.  
  82.   フォントファイルは、IOCS.X(HIOCS.X) や TC.X 等で用いる FON 形式のファイル
  83. と互換性があります。さらに全角フォントだけの組み込みや、10/12/24 dot のフォ
  84. ントも扱えるように拡張されています。
  85.  
  86.   組み込みできるフォントファイルには以下の種類があります。それぞれフォントサ
  87. イズや種類は、ドライバがファイルサイズから勝手に判断するので、いちいちコマン
  88. ドラインから指示する必要はありません。
  89.  
  90.   ★   :HIOCS.X や TC.X でも共通使えるフォントファイル
  91.   ROM  :ROMに元々内蔵されているフォント
  92.   IOCS :IOCS がコンバートして自動作成するもの
  93.   HFONT:hfont.r コンバートして自動作成するもの
  94.  
  95. type
  96. ASC    10dot 半角のみ      ( 5x10) $00~$ff         2560 byte    ◎
  97. ASC    12dot 半角のみ      ( 6x12) $00~$ff         3072 byte        ROM
  98. ASC    16dot 半角のみ      ( 8x16) $00~$ff         4096 byte    ★    ROM
  99. ASC    24dot 半角のみ      (12x24) $00~$ff        12288 byte        ROM
  100.  
  101. ASC    12dot 1/4角のみ  ( 6x6 dot) $00~$ff         1536 byte  ◇    ROM
  102. ASC    16dot 1/4角のみ  ( 8x8 dot) $00~$ff         2048 byte        ROM
  103. ASC    24dot 1/4角のみ  (12x12dot) $00~$ff         6144 byte        ROM
  104.  
  105. ZFN0    10dot 全角のみ 非漢字           2121~2f7e  28200 byte        HFONT
  106. ZFN0    12dot 全角のみ 非漢字           2121~2f7e  33840 byte        IOCS
  107. ZFN0    16dot 全角のみ 非漢字           2121~2f7e  45120 byte        ROM
  108. ZFN0    24dot 全角のみ 非漢字           2121~2f7e  67680 byte        ROM
  109.  
  110. ZFN1    10dot 全角のみ 非漢字+第1水準   2121~4f7e  88360 byte        HFONT
  111. ZFN1    12dot 全角のみ 非漢字+第1水準   2121~4f7e 106032 byte        IOCS
  112. ZFN1    16dot 全角のみ 非漢字+第1水準   2121~4f7e 141376 byte        ROM
  113. ZFN1    24dot 全角のみ 非漢字+第1水準   2121~4f7e 318096 byte        ROM
  114.  
  115. ZFN2    10dot 全角のみ 全部(非+第1+第2) 2121~7e7e 176720 byte        HFONT
  116. ZFN2    12dot 全角のみ 全部(非+第1+第2) 2121~7e7e 212064 byte        IOCS
  117. ZFN2    16dot 全角のみ 全部(非+第1+第2) 2121~7e7e 282752 byte        ROM
  118. ZFN2    24dot 全角のみ 全部(非+第1+第2) 2121~7e7e 636192 byte        ROM
  119.  
  120. FON0    10dot 半角+全角 非漢字                    30760 byte        HFONT
  121. FON0    12dot 半角+全角 非漢字                    36912 byte         ROM/IOCS
  122. FON0    16dot 半角+全角 非漢字                    49216 byte    ★    ROM
  123. FON0    24dot 半角+全角 非漢字                    79968 byte        ROM
  124.  
  125. FON1    10dot 半角+全角 非漢字+第1水準              90920 byte        HFONT
  126. FON1    12dot 半角+全角 非漢字+第1水準             109104 byte         ROM/IOCS
  127. FON1    16dot 半角+全角 非漢字+第1水準             145472 byte    ★    ROM
  128. FON1    24dot 半角+全角 非漢字+第1水準             324240 byte        ROM
  129.  
  130. FON2    10dot 半角+全角 全部(非+第1+第2)           179280 byte        HFONT
  131. FON2    12dot 半角+全角 全部(非+第1+第2)           215136 byte          ROM/IOCS
  132. FON2    16dot 半角+全角 全部(非+第1+第2)           286848 byte    ★    ROM
  133. FON2    24dot 半角+全角 全部(非+第1+第2)           648480 byte        ROM
  134.  
  135.  
  136.  付属の hfont10.fon  は◎マークのファイルです
  137.     hfont6x6.fon は◇マークのファイルです
  138.  
  139.  
  140.  
  141. ● 10dot フォントの拡張
  142.  
  143.   IOCS の _FNTADR($16), _FNTGET($19) では、16/24dot の ROM 内フォントの呼び
  144. 出しの他に、12dot フォントも使用できるようになっています。さらにこの hfont.r
  145. を組み込むと、10dot フォントがも全く同様に使用できるようになります。(ただし、
  146. 半角フォントとして付属の hfont10.fon を組み込んでおく必要がある)
  147.   以下に、それらの使い方を説明します。
  148.  
  149.     IOCS CALL $16 _FNTADR
  150.  
  151.     入力 d1.w = 呼び出す文字コード
  152.          d2.l = フォントサイズ  5=10dot, 6=12dot, 8=16dot, 12=24dot
  153.  
  154.     出力 d0.l = フォントアドレス
  155.          d1.w = 横方向バイト数-1
  156.          d2.w = 縦方向ドット数-1
  157.         (注:プログラマーズマニュアル等には載っていませんが、出力の
  158.          d1.l の上位ワードには横方向のドット数が入ります)
  159.  
  160.  
  161.     IOCS CALL $19 _FNTGET
  162.  
  163.     入力 d1.l = 下位16bit: 呼び出す文字コード
  164.             上位16bit: フォントサイズ 5=10dot,6=12dot,8=16dot,12=24dot
  165.          a1.l = 読み出しバッファアドレス
  166.  
  167.     出力 0(a1).w = 横方向ドット数
  168.          2(a1).w = 縦方向ドット数
  169.          4(a1).? = 読み出したフォントパターン 展開バイト数は次の通り
  170.             24x24 : 72byte
  171.             24x12 : 48byte
  172.             16x16 : 32byte
  173.             16x8  : 16byte
  174.             12x12 : 24byte
  175.             12x6  : 12byte
  176.             10x10 : 20byte
  177.             10x5  : 12byte <= パターンは10byteだが12byte破壊され
  178.                     ることに注意!
  179.  
  180.  
  181.  
  182. ● 12dot フォント生成について
  183.  
  184.   12dot 全角フォントは X680x0 の ROM には含まれていないので、元々の IOCS では
  185.  24dot フォントを圧縮して作り上げるようになっていました。これは線が太く読み
  186. にくく、また作成に時間がかかるので表示もかなり遅くなっています。
  187.  
  188.   そこでこの hfont.r では 16dot 全角フォントからの変換を行い、みやすくかつ高
  189. 速処理を実現しています。
  190.  
  191.   もちろん、外部から 12dot 全角文字を組み込めば変換が必要ないため、さらに高速
  192. で読みやすくなります。フリーで配布されている 12dot フォントを持っている方は組
  193. み込んでみるといいでしょう。
  194.  
  195.   12dot 1/4角フォント(6x6dot)は、hfont v1.20 ではバグがあって正常に表示されま
  196. せんでした。v1.21 以降は直っています。この 12dot 1/4角フォントも IOCS 内部で
  197. 変換して作られるためあまり表示は見やすくはありません。これも外部から組み込む
  198. ことで読みやすくなります。付属の hfont6x6.fon はこの 12dot 1/4角フォントのサ
  199. ンプルです。組み込まなくても表示できますが、気になる方は使用してみて下さい。
  200. (ただしフォントが全部そろっているわけではありません)
  201. < hfont6x6.fon を仕上げてくれたでんでんネットの美紀chanさんに感謝 >
  202.  
  203.  
  204.  
  205. ● 10dot フォント生成について
  206.  
  207.   10dot 半角フォントは ROM にありません。そこで 10dot フォントを使用する場合
  208. は外部から半角フォントを組み込んでおかなければなりません。このアーカイブには
  209.  hfont10.fon という 10dot 半角サンプルフォントを付属しているのでそれを組み込
  210. みます。(デザインが気に入らない方は適当に修正して下さい)
  211.  
  212.   10dot 全角フォントも当然 ROM にありませんのでなんらかの形で作成する必要があ
  213. ります。hfont では、12dot全角同様内部でフォント加工をしてこれをリアルタイムに
  214. 作成します。v1.22 からは外部組み込みも可能になりました。外部組み込みの場合は
  215. 加工が不用なため、IOCS _FNTGET で約3倍程速くなります。
  216.  
  217.   ただし 1/4角文字には完全対応していません。取り敢えず表示はできますが、レジ
  218. スタの戻り値のドットサイズを利用しているプログラムでは 12dot 1/4角として扱わ
  219. れる可能性があります。
  220.  
  221.  
  222.  
  223. ●フォントファイルの構造についてちょっとだけ説明
  224.  
  225. <<半角部 (ASCIIコード)>>
  226.  
  227.   フォントファイルでは、特別なヘッダ等はなく直接文字コード $00 から順に $ff
  228. までの 256 文字分のデータが素直に並んでいます。実際の文字並びを以下に示しま
  229. す。(都合上全角文字で表現しています)
  230.  
  231.     +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
  232. -------------------------------------------------------
  233. 00       SH SX EX ET EQ AK BL BS HT LF VT FF CR SO SI
  234. 10    DE D1 D2 D3 D4 NK SN EB CN EM SB EC → ← ↑ ↓
  235. 20       ! ” # $ % & ’ ( ) * + , - . /
  236. 30    0 1 2 3 4 5 6 7 8 9 : ; < = > ?
  237. 40    @ A B C D E F G H I J K L M N O
  238. 50    P Q R S T U V W X Y Z [ ¥ ] ^ _
  239. 60    ‘ a b c d e f g h i j k l m n o
  240. 70    p q r s t u v w x y z { | }  ̄
  241. 80    \ ~ |          を ぁ ぃ ぅ ぇ ぉ ゃ ゅ ょ っ
  242. 90       あ い う え を か き く け こ さ し す せ そ
  243. A0       。 「 」 、 ・ ヲ ァ ィ ゥ ェ ォ ャ ュ ョ ッ
  244. B0    ー ア イ ウ エ ヲ カ キ ク ケ コ サ シ ス セ ソ
  245. C0    タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ ヒ フ ヘ ホ マ
  246. D0    ミ ム メ モ ヤ ユ ヨ ラ リ ル レ ロ ワ ン ゛ ゜
  247. E0    た ち つ て と な に ぬ ね の は ひ ふ へ ほ ま
  248. F0    み む め も や ゆ よ ら り る れ ろ わ ん
  249.  
  250.   上記の表のなかで $20, $a0 の文字は空白です。$83~$85 および $fe~$ff は未
  251. 定義です。SRAM スイッチのキャラクタ切り替え設定を有効にするためには、必ず以
  252. 下のように定義しておいて下さい。
  253.  
  254.     $5c  円マーク
  255.     $7c  つながった縦線
  256.     $7e  オーバーライン
  257.  
  258.     $80  バックスラッシュ
  259.     $81  チルダ(波線)
  260.     $82  真ん中の切れた縦線
  261.  
  262.   $00~$1f および $7f はコントロールキャラクタです。普通の文字出力では出てき
  263. ませんが、$8000~$801f, $807f のコードで呼び出すと、指定したフォントの内容を
  264. 呼び出すことができます。
  265.  
  266.   1文字分のデータは上位側にデータを詰めておきます例えば、12x6dot フォントで
  267. は横1列のうち上位 6bit が有効で、下位2bit は 0 にしておきます。10x5dot フォ
  268. ントも同様に上位 5bitのみ使用し、24x12dot フォントでは、横1列 2byte のうち
  269. 上位 12bit のみ使います。
  270.  
  271.  
  272. <<全角部>>
  273.  
  274.   コード順に 2121(JIS) 8140(SJIS) から 7e7e(JIS) effc(SJIS) まで順番に並んで
  275. います。以下にそのコード範囲とそれぞれのフォントファイルに含まれるコード範囲
  276. を表にします。
  277.  
  278.    JIScode    SJIScode            ASC ZFN0 ZFN1 ZFN2 FON0 FON1 FON2  -u
  279.   ----------------------------------------------------------------------------
  280.             ASCII256文字    ○   ×   ×   ×   ○   ○   ○
  281.   2121~287e 8540~84fc    非漢字        ×   ○   ○   ○   ○   ○   ○
  282.   2921~2a7e 8540~85fc    未使用        ×   ○   ○   ○   ○   ○   ○
  283.   2b21~2c7e 8640~86fc    外字その1    ×   ○   ○   ○   ○   ○   ○   --
  284.   2d21~2f7e 8740~889e    未使用        ×   ○   ○   ○   ○   ○   ○
  285.   3021~4f7e 889f~989e    第1水準漢字    ×   ×   ○   ○   ×   ○   ○
  286.   5021~7b7e 989f~ee9e    第2水準漢字    ×   ×   ×   ○   ×   ×   ○
  287.   7621~777e eb9f~ec9e    外字その2      ×   ×   ×   ○   ×   ×   ○   --
  288.   7821~7e7e ec9f~effc    拡張外字領域    ×   ×   ×   ○   ×   ×   ○   --
  289.  
  290.   フォントを組み込む場合の非漢字フォントファイルとは、2121~2f2e までの文字
  291. ファイルをいいます。つまり未使用領域と外字領域その1を含みます。
  292.  
  293.   拡張外字領域とは、フォント分の領域が SYSTEM に用意されていないものの、むり
  294. やり定義可能でIOCSのバグ(?)で使用できてしまう外字領域です。これは外字領域そ
  295. の2とともに第2水準までのフォントファイルに含まれます。
  296.  
  297.   CONFIG.SYS の USKCG 行で指定できる SYSTEM の外字領域は上記の通り2箇所にあ
  298. りますが、もちろんこのドライバでその部分を置き換えた場合はわざわざその外字を
  299. 登録する必要はありません。(登録しても無駄にはなりませんが意味はありません)
  300.  
  301.   ですが、特別にシステム側で組み込んだ外字を優先にしたいという場合には、起動
  302. 時に -u スイッチをつけて常駐させて下さい。この場合フォントファイルのうち上記
  303. の2箇所の外字部分(+拡張外字領域)は使われず、必ず SYSTEM の外字を使用します。
  304.  
  305.  
  306.  
  307. ●外部コントロール機能について
  308.  
  309.   このドライバは、自分自身が持っているフォント切替機能の他に、さまざま柔軟な
  310. フォント切り替えができるようになっています。
  311.  
  312.   例えば全角漢字フォントは必ず連続メモリ領域にパターンが並んでいる必要はなく、
  313.  JIS コードでいう94文字単位の1ブロック毎に、任意のアドレスに点在させること
  314. ができるようになっています。これによって任意のブロックのみ外部から置き換え、
  315. 他のブロックは ROM フォントを使用するといった使い方も可能です。
  316.  
  317.   これらのコントロールは、外部から常駐部内テーブルへのアクセスによって行いま
  318. す。外部アクセスのためのインターフェースは h12fon.r 互換です。C言語からアク
  319. セスするための hfontlib.a を別配布しています。
  320.  
  321.  
  322.  
  323. ●ドライバの速度レポート
  324.  
  325.   ちょっとした速度テストを行ってみました。IOCS FNTGET にて全部のフォントパター
  326. ンを読み出すループ比較です。
  327.  
  328.     ・ROM IOCS v1.0 87/05/07版 (X68000PRO,CZ-652C のもの)
  329.  
  330.         size  半角ASCII 全角JIS   全角SJIS     合計    速度比
  331.         12dot   9:96    109:59    105:39    224:94     1.00
  332.         16dot  10:54     17:93     19:65     48:12   1.00
  333.         24dot  17:41     27:53     28:66     73:60   1.00
  334.  
  335.     ・IOCS.X v1.50
  336.         常駐方法: iocs.x  (スイッチ指定なし)
  337.  
  338.         size  半角ASCII 全角JIS   全角SJIS     合計    速度比
  339.         12dot   7:56     93:76     88:77    190:09     1.18
  340.         16dot   7:57     10:91     11:25     29:73     1.62
  341.         24dot  10:02     14:26     14:37     38:65     1.90
  342.  
  343.     ・hfont.r v1.20  内部で12dot全角フォントを作り出す場合
  344.         常駐方法: hfont hfont10.fon
  345.  
  346.         size  半角ASCII 全角JIS   全角SJIS     合計    速度比
  347.         10dot   6:15     29:45     28:12     63:72     ----
  348.         12dot   6:18     25:28     24:23     55:69     4.04
  349.         16dot   6:05      8:87      8:86     23:78     2.02
  350.         24dot   7:69     11:19     11:00     29:88     2.46
  351.  
  352.     ・hfont.r v1.20  外部12dot全角フォントを組み込んだ時
  353.         常駐方法: hfont zen12.fon hfont10.fon
  354.  
  355.         size  半角ASCII 全角JIS   全角SJIS     合計    速度比
  356.         10dot   6:15     29:46     28:11     63:72     ----
  357.         12dot   6:21      8:86      8:87     23:94     9.40
  358.         16dot   6:10      8:94      8:87     23:91     2.01
  359.         24dot   7:69     11:21     11:00     29:90     2.46
  360.  
  361.   ここでの速度比とは厳密ではなくチェックプログラムにおける動作上のものです。
  362. (チェックプログラムソースは付属の allfont.c )
  363.  
  364.  
  365. ●関連ツール
  366.  
  367.     hfontlib.a    外部から hfont.r のフォント切り替えサービス等を操作
  368.             するためのC言語用ライブラリです。v1.22 から同梱にな
  369.             りました。ソースリストが必要な方は別と入手して下さい。
  370.  
  371.     hfc.x        外部から hfont.r の状態をコントロールし、フォント切
  372.             り替え等を行わせるツールです。hfontlib のサンプルと
  373.             してもどうぞ。v1.22 から同梱になりました。ソースリス
  374.             トは hfontlib のソースアーカイブに含まれています。
  375.  
  376.   以下は別配布している関連ツールです。できれば一緒に転載して下さい。
  377.  
  378.     make12.x    フォントマネージャです。合成、取り出し、変換等、FON
  379.             形式のファイルにおけるあらゆる操作を可能にします。
  380.             12,16,24dot 対応です。
  381.  
  382.     16to10.x    16dot 用フォントツールで 10dot や 8dot 等を作成する
  383.             ための簡易コンバータです。相互変換や他のドット数にも
  384.             (リネームするだけで)対応できます。(ただし半角のみ)
  385.  
  386.   フォントエディタは FONTED2.X および Ko-Window 上に FONTED3.win, FED3_24.win
  387.  USK_WIN.win , TC_WIN.win , CODE.win 等、各種環境をそろえてあります。
  388.  
  389.  
  390.  
  391. ●配布
  392.  
  393.   このプログラムの著作権は作者が有します。すべてのプログラムコードおよびこの
  394. ドキュメント内容の無断改変や部分的な無断転用を禁じます。動作は無保証であり、
  395. このプログラムの使用によって生じたいかなる被害においても作者は無関係で責任は
  396. ないものとします。販売等の利益目的で使用されない場合においては自由に配布や利
  397. 用が可能で、ネット等へ転載やアップロードができます。その場合特に作者へ許可を
  398. 求める必要はありません。
  399.  
  400.  
  401.  
  402. ●謝辞
  403.  
  404.   このプログラムの作成には、さまざまなフリーソフトウエアを活用させていただき
  405. ました。このプログラムは Ko-Window 環境上で HAS.X, HLK.X によって開発され、
  406. 配布には LHA.X 等のツールを活用させていただきました。作者の方々にはたいへん
  407. 感謝します。
  408.  
  409.  
  410.  
  411. ●連絡先
  412.  
  413. 小笠原博之  oga@dgw.yz.yamagata-u.ac.jp
  414. DenDen-NET: DEN0006 COR.
  415.  
  416.